package com.example.ecommerce.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.ecommerce.dto.MenuDTO;
import com.example.ecommerce.entity.Menu;

import java.util.List;

public interface MenuService extends IService<Menu> {
//    List<> getMenus(Long userId);
    /**
     * 获取用户的菜单列表
     */
    List<MenuDTO> getUserMenus(Long userId);

    /**
     * 获取菜单详情
     */
    MenuDTO getMenuById(Long id);

    /**
     * 获取菜单树
     */
    List<MenuDTO> getMenuTree();

    /**
     * 创建菜单
     */
    MenuDTO createMenu(MenuDTO menuDTO);

    /**
     * 更新菜单
     */
    MenuDTO updateMenu(Long id, MenuDTO menuDTO);

    /**
     * 删除菜单
     */
    void deleteMenu(Long id);

    /**
     * 根据角色ID获取菜单列表
     */
    List<MenuDTO> getMenusByRoleId(Long roleId);

    /**
     * 为角色分配菜单
     */
    void assignMenuToRole(Long roleId, List<Long> menuIds);

    /**
     * 检查菜单是否存在
     */
    boolean exists(Long id);

    /**
     * 获取所有启用的菜单（不分层级）
     */
    List<MenuDTO> getAllEnabledMenus();

    /**
     * 获取子菜单数量
     */
    Integer countChildren(Long parentId);

    /**
     * 检查菜单权限
     */
    boolean checkPermission(Long userId, String permission);
}